'use strict';

console.log('-------------------------7 函数表达式');

console.log('-------------------------7.1 递归----');
// 函数名如果在递归时,被修改可能会导致报错
(function(){
	// 在严格模式下不能执行
	function factorial(num){
		if( num <= 1 ){
			return 1;
		} else {
//			return num * arguments.callee(num-1);
		}
	}

	var factorial2 = (function f(num){
		if( num <= 1 ){
		   return 1;
		} else {
			return num * f(num-1);
		}
	});	

	console.log( factorial(5) );
	console.log( factorial(5) );

}());

console.log('-----------------------7.2 闭包 ------');
// 闭包是指有权访问另一个函数作用域中变量的函数

